package com.icongyou.enterprise.talent_analysis.service.support;

import lombok.extern.slf4j.Slf4j;

/**
 * Mock AI客户端实现 (用于开发测试)
 * 生产环境需替换为真实的AI服务调用(OpenAI/Claude/通义千问等)
 */
@Slf4j
// @Component  // 使用真实 OpenAIClient 时注释此行
public class MockAIClient implements AIClient {

    @Override
    public String generateScoringStandard(String prompt) {
        
        // Mock返回: 实际应调用真实AI API
        return "{\n" +
            "  \"metrics\": [\n" +
            "    {\"metricKey\": \"avg_course_score\", \"weight\": 0.4},\n" +
            "    {\"metricKey\": \"avg_assignment_score\", \"weight\": 0.3},\n" +
            "    {\"metricKey\": \"assignment_pass_rate\", \"weight\": 0.3}\n" +
            "  ],\n" +
            "  \"textAnalysisRules\": \"分析教师评语中关于专业能力、代码质量的描述\",\n" +
            "  \"scoringLogic\": \"数值指标加权平均占70%,教师评语情感分析占30%\"\n" +
            "}";
    }

    @Override
    public String recommendMapping(String prompt) {
        return "[\"avg_course_score\", \"avg_assignment_score\", \"assignment_pass_rate\", " +
            "\"learning_speed_index\", \"teacher_comment_rate\"]";
    }

    @Override
    public String evaluateDimension(String prompt) {
        // 返回随机分数用于测试
        double score = 3.0 + Math.random() * 2.0; // 3.0-5.0之间
        return String.format("%.1f", score);
    }

    @Override
    public String analyzeText(String text, String analysisType) {
        
        switch (analysisType) {
            case "sentiment":
                return "positive"; // positive/neutral/negative
            case "keywords":
                return "[\"认真负责\", \"代码规范\", \"思路清晰\"]";
            case "summary":
                return "该学生表现优秀,具备扎实的专业基础";
            default:
                return "";
        }
    }
    
    @Override
    public String extractKeywords(java.util.List<String> comments) {
        
        // Mock返回: 模拟从评语中提取的高频关键词及其出现次数
        // 实际应调用AI服务进行智能提取和词频统计
        // 返回JSON格式: {"关键词": 出现次数}
        return "{\n" +
            "  \"认真负责\": 5,\n" +
            "  \"代码规范\": 4,\n" +
            "  \"思路清晰\": 4,\n" +
            "  \"团队合作\": 3,\n" +
            "  \"积极主动\": 3,\n" +
            "  \"学习能力强\": 3,\n" +
            "  \"创新思维\": 2,\n" +
            "  \"表现优秀\": 2,\n" +
            "  \"进步明显\": 2,\n" +
            "  \"专业扎实\": 2,\n" +
            "  \"沟通能力好\": 1,\n" +
            "  \"执行力强\": 1,\n" +
            "  \"善于总结\": 1\n" +
            "}";
    }
    
    @Override
    public String chat(String prompt) {
        
        // Mock返回: 根据提示词内容返回不同的模拟结果
        if (prompt.contains("岗位推荐") || prompt.contains("岗位")) {
            return "基于该学生的能力画像，推荐以下岗位：\n1. 软件开发工程师 - 技术能力突出\n2. 项目助理 - 综合能力均衡";
        } else if (prompt.contains("优点") && prompt.contains("缺点")) {
            return "优点：\n1. 技术能力表现优秀\n2. 学习速度快\n3. 团队协作能力强\n\n缺点：\n1. 沟通能力有待提升\n2. 部分任务存在逾期情况";
        } else if (prompt.contains("职业发展建议") || prompt.contains("建议")) {
            return "建议继续深化技术专业能力，同时加强沟通表达训练。可通过技术分享、项目汇报等方式提升软技能。";
        } else {
            return "该学生综合能力良好，具有发展潜力。";
        }
    }
}
